S3 bucket構成の推奨
社内でのDatalake活用の本格化前にAWS Lake formation/Amazon S3周りの「設計」を見直した
このPageではS3 bucket.iconの分割ルールなどを整理した
色々読んだところ、以下の結論に落ち着いている
1. 基本は同一bucketで良い
2. 分けるタイミングはほぼない
知っておくべき原則
権限(IAM)など多くの機能は path でも機能する
bucket policy など一部の機能は s3 bucket 単位になるので、要件によっては注意が必要
グループが動的に増える場合は path がよい
s3 bucket name がグローバルで一意なため
bucketを分けるのではなく、bucket内でpathを分ける
資料から学ぶ
一般的なS3 bucketの分割推奨タイミングは
AWS Summit 2019 「データレイク構築における成功の秘訣」
https://gyazo.com/66736dd4ecf8f5877b041459a6a0d206
Lake Formationで管理する上で…意識するPointは
1. ライフサイクルポリシー
量が膨大な raw dataに対しては「ライフサイクルポリシー」を付与することになる。
特にlog dataなどを保管するbucketの場合は、別個に分けておいた方がいいかもしれない
くらい。
LakeFormationでpermission管理するので「バケットポリシー」は大きくならない。「オブジェクトロック」も意識しなくて良い
AWS Summit 2019 「Security Best Practices on Amazon S3」
AWS Summit 2019 「データレイク構築における成功の秘訣」
AWS Summit 2019「【初級】AWSで構築するデータレイク 基盤概要とアーキテクチャ例のご紹介」
AWS Summit 2019「AWSでのデータ収集、分析、そして機械学習」
バケットの制約と制限 - Amazon Simple Storage Service
デフォルトでは、AWS アカウントにつき最大で 100 個のバケットを作成できます。追加のバケットが必要な場合は、サービスの制限の緩和を申請することによって、アカウントバケットの制限を最大 1,000 バケットまで引き上げることができます。使用するバケットの数が多いか少ないかにかかわらず、パフォーマンスに違いはありません。バケットの制限を引き上げる方法については、AWS 全般のリファレンスの「AWS サービスのクォータ」を参照してください。
バケット名の再利用
バケットが空の場合は削除できます。バケットが削除されると、その名前は再利用できるようになります。ただし、バケットを削除すると、さまざまな理由で名前を再利用できない場合があります。たとえば、バケットを削除してその名前が再利用可能になると、別のアカウントがその名前でバケットを作成する場合があります。また、削除したバケットの名前が再利用可能になるまでに、しばらく時間がかかる場合もあります。同じバケット名を使用する場合は、バケットを削除しないことをお勧めします。
オブジェクトとバケット
バケットに保存できるオブジェクト数に制限はありません。すべてのオブジェクトを 1 つのバケットに格納してもかまいませんし、複数のバケットに分けて整理してもかまいません。ただし、別のバケット内からバケットを作成することはできません。
バケットオペレーション
Amazon S3 の高可用性技術は、GET、PUT、LIST、および DELETE オペレーションに重点を置いています。バケットオペレーションは中央集中型のグローバルリソーススペースに対して作用するため、お使いのアプリケーションの高可用性コードパスでバケットの作成や削除を行うのは適切ではありません。バケットの作成や削除は、個別の初期化や、頻繁に実行しないセットアップルーチンで実行するほうが適しています。
バケットの命名規則と自動作成されたバケット
アプリケーションが自動的にバットを作成する場合は、命名の衝突が起きないようなバケット命名スキームを使用してください。特定のバケット名が既に使用されている場合は、異なるバケット名をアプリケーションロジックが選択するようにしてください。